package org.jsets.fastboot.eventbus;

import com.google.common.annotations.Beta;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
@Beta
public @interface RetrySubscribe {
	
	// 条件表达式
	String condition() default "";
	
	// 重试次数，默认3
	int maxAttempts() default 3;
	
	//每次重试延迟毫秒数，默认为0
	int delay() default 0;
	
	// 延迟倍数）默认为1  如果delay等于2，multiplier等于2，则第一次重试为2秒，第二次为4秒，第三次为8秒…
	int multiplier() default 1;
	
	Class<? extends Throwable>[] retryFor() default {};
	
}